home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / demos / VisualAge for Java 2.0 Entry / setup / data1.cab / ide-e / IDE / cache / 1HFMD8M (.txt) < prev    next >
Encoding:
Java Class File  |  1998-09-16  |  5.0 KB  |  167 lines

  1. package com.sun.java.swing.plaf.basic;
  2.  
  3. import com.sun.java.swing.AbstractListModel;
  4. import com.sun.java.swing.event.ListDataEvent;
  5. import com.sun.java.swing.preview.JFileChooser;
  6. import java.beans.PropertyChangeEvent;
  7. import java.beans.PropertyChangeListener;
  8. import java.io.File;
  9. import java.util.Vector;
  10.  
  11. class BasicDirectoryModel extends AbstractListModel implements PropertyChangeListener {
  12.    private JFileChooser filechooser = null;
  13.    private Vector fileCache = null;
  14.    private LoadFilesThread loadThread = null;
  15.    private Vector files = null;
  16.    private Vector directories = null;
  17.  
  18.    BasicDirectoryModel(JFileChooser filechooser) {
  19.       this.filechooser = filechooser;
  20.       this.validateFileCache();
  21.    }
  22.  
  23.    public boolean contains(Object o) {
  24.       return this.fileCache != null ? this.fileCache.contains(o) : false;
  25.    }
  26.  
  27.    public void fireContentsChanged() {
  28.       this.files = null;
  29.       this.directories = null;
  30.       ((AbstractListModel)this).fireContentsChanged(this, 0, this.fileCache.size() - 1);
  31.    }
  32.  
  33.    public Vector getDirectories() {
  34.       if (this.directories != null) {
  35.          return this.directories;
  36.       } else {
  37.          this.getFiles();
  38.          return this.directories;
  39.       }
  40.    }
  41.  
  42.    public Object getElementAt(int index) {
  43.       return this.fileCache != null ? this.fileCache.elementAt(index) : null;
  44.    }
  45.  
  46.    public Vector getFiles() {
  47.       if (this.files != null) {
  48.          return this.files;
  49.       } else {
  50.          this.files = new Vector();
  51.          this.directories = new Vector();
  52.          this.directories.addElement(this.filechooser.getFileSystemView().createFileObject(this.filechooser.getCurrentDirectory(), ".."));
  53.  
  54.          for(int i = 0; i < this.fileCache.size(); ++i) {
  55.             File f = (File)this.fileCache.elementAt(i);
  56.             if (this.filechooser.isTraversable(f)) {
  57.                this.directories.addElement(f);
  58.             } else {
  59.                this.files.addElement(f);
  60.             }
  61.          }
  62.  
  63.          return this.files;
  64.       }
  65.    }
  66.  
  67.    public int getSize() {
  68.       return this.fileCache != null ? this.fileCache.size() : 0;
  69.    }
  70.  
  71.    public int indexOf(Object o) {
  72.       return this.fileCache != null ? this.fileCache.indexOf(o) : 0;
  73.    }
  74.  
  75.    public void intervalAdded(ListDataEvent e) {
  76.    }
  77.  
  78.    public void intervalRemoved(ListDataEvent e) {
  79.    }
  80.  
  81.    public void invalidateFileCache() {
  82.       this.files = null;
  83.       this.directories = null;
  84.       this.fileCache = null;
  85.    }
  86.  
  87.    // $FF: renamed from: lt (java.io.File, java.io.File) boolean
  88.    protected boolean method_0(File a, File b) {
  89.       return a.getName().compareTo(b.getName()) < 0;
  90.    }
  91.  
  92.    public void propertyChange(PropertyChangeEvent e) {
  93.       String prop = e.getPropertyName();
  94.       if (prop == "directoryChanged" || prop == "fileViewChanged" || prop == "fileFilterChanged" || prop == "FileHidingChanged" || prop == "fileSelectionChanged") {
  95.          this.invalidateFileCache();
  96.          this.validateFileCache();
  97.       }
  98.  
  99.    }
  100.  
  101.    private void quickSort(Vector v, int lo0, int hi0) {
  102.       int lo = lo0;
  103.       int hi = hi0;
  104.       if (hi0 > lo0) {
  105.          File mid = (File)v.elementAt((lo0 + hi0) / 2);
  106.  
  107.          while(lo <= hi) {
  108.             while(lo < hi0 && this.method_0((File)v.elementAt(lo), mid)) {
  109.                ++lo;
  110.             }
  111.  
  112.             while(hi > lo0 && this.method_0(mid, (File)v.elementAt(hi))) {
  113.                --hi;
  114.             }
  115.  
  116.             if (lo <= hi) {
  117.                this.swap(v, lo, hi);
  118.                ++lo;
  119.                --hi;
  120.             }
  121.          }
  122.  
  123.          if (lo0 < hi) {
  124.             this.quickSort(v, lo0, hi);
  125.          }
  126.  
  127.          if (lo < hi0) {
  128.             this.quickSort(v, lo, hi0);
  129.          }
  130.       }
  131.  
  132.    }
  133.  
  134.    protected void sort(Vector v) {
  135.       this.quickSort(v, 0, v.size() - 1);
  136.    }
  137.  
  138.    private void swap(Vector a, int i, int j) {
  139.       Object T = a.elementAt(i);
  140.       a.setElementAt(a.elementAt(j), i);
  141.       a.setElementAt(T, j);
  142.    }
  143.  
  144.    public void validateFileCache() {
  145.       File currentDirectory = this.filechooser.getCurrentDirectory();
  146.       if (currentDirectory == null) {
  147.          this.invalidateFileCache();
  148.       } else {
  149.          this.fileCache = new Vector(50);
  150.          if (this.loadThread != null) {
  151.             this.loadThread.interrupt();
  152.          }
  153.  
  154.          this.loadThread = new LoadFilesThread(this, currentDirectory);
  155.          this.loadThread.start();
  156.       }
  157.    }
  158.  
  159.    static Vector access$fileCache(BasicDirectoryModel var0) {
  160.       return var0.fileCache;
  161.    }
  162.  
  163.    static JFileChooser access$filechooser(BasicDirectoryModel var0) {
  164.       return var0.filechooser;
  165.    }
  166. }
  167.